File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -97,10 +97,13 @@ std::string llvm::convertToSnakeFromCamelCase(StringRef input) {
9797 if (input.empty ())
9898 return " " ;
9999
100+ llvm::Regex trailingCap = llvm::Regex (" ([A-Z]+)([A-Z][a-z])" );
101+ llvm::Regex leadingCap = llvm::Regex (" ([a-z0-9])([A-Z])" );
102+
100103 std::string snakeCase = input.str ();
101104 for (int i = 0 ; i < 10 ; ++i) {
102- snakeCase = llvm::Regex ( " ([A-Z]+)([A-Z][a-z]) " ) .sub (" \\ 1_\\ 2" , snakeCase);
103- snakeCase = llvm::Regex ( " ([a-z0-9])([A-Z]) " ) .sub (" \\ 1_\\ 2" , snakeCase);
105+ snakeCase = trailingCap .sub (" \\ 1_\\ 2" , snakeCase);
106+ snakeCase = leadingCap .sub (" \\ 1_\\ 2" , snakeCase);
104107 }
105108 std::transform (snakeCase.begin (), snakeCase.end (), snakeCase.begin (),
106109 [](unsigned char c) { return std::tolower (c); });
Original file line number Diff line number Diff line change @@ -185,6 +185,7 @@ TEST(StringExtrasTest, ConvertToSnakeFromCamelCase) {
185185 testConvertToSnakeCase (" OpName" , " op_name" );
186186 testConvertToSnakeCase (" opName" , " op_name" );
187187 testConvertToSnakeCase (" OPName" , " op_name" );
188+ testConvertToSnakeCase (" Intel_OCL_BI" , " intel_ocl_bi" );
188189 testConvertToSnakeCase (" opNAME" , " op_name" );
189190 testConvertToSnakeCase (" opNAMe" , " op_na_me" );
190191 testConvertToSnakeCase (" opnameE" , " opname_e" );
You can’t perform that action at this time.
0 commit comments