Skip to content

Commit b7c4c51

Browse files
authored
[ClangImporter] Simplify inferDefaultArgument by removing numParams (#27864)
The only thing this was used for is to test if the total number of parameters was 1, in which case we did the same thing we did for a first parameter except in one very contrived case: a method with more than one parameter whose base name starts with "set" and whose first parameter is an NSZone. There are zero of these in the macOS or iOS SDKs, and probably even fewer in third-party code.
1 parent 87eb38f commit b7c4c51

File tree

3 files changed

+10
-16
lines changed

3 files changed

+10
-16
lines changed

lib/ClangImporter/ImportName.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -841,8 +841,8 @@ static bool omitNeedlessWordsInFunctionName(
841841
param->getType(),
842842
getParamOptionality(swiftLanguageVersion, param,
843843
!nonNullArgs.empty() && nonNullArgs[i]),
844-
nameImporter.getIdentifier(baseName), numParams, argumentName,
845-
i == 0, isLastParameter, nameImporter) != DefaultArgumentKind::None;
844+
nameImporter.getIdentifier(baseName), argumentName, i == 0,
845+
isLastParameter, nameImporter) != DefaultArgumentKind::None;
846846

847847
paramTypes.push_back(getClangTypeNameForOmission(clangCtx,
848848
param->getOriginalType())

lib/ClangImporter/ImportType.cpp

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1762,13 +1762,12 @@ static bool isObjCMethodResultAudited(const clang::Decl *decl) {
17621762

17631763
DefaultArgumentKind ClangImporter::Implementation::inferDefaultArgument(
17641764
clang::QualType type, OptionalTypeKind clangOptionality,
1765-
DeclBaseName baseName, unsigned numParams, StringRef argumentLabel,
1766-
bool isFirstParameter, bool isLastParameter, NameImporter &nameImporter) {
1765+
DeclBaseName baseName, StringRef argumentLabel, bool isFirstParameter,
1766+
bool isLastParameter, NameImporter &nameImporter) {
17671767
auto baseNameStr = baseName.userFacingName();
17681768

1769-
// Don't introduce a default argument for setters with only a single
1770-
// parameter.
1771-
if (numParams == 1 && camel_case::getFirstWord(baseNameStr) == "set")
1769+
// Don't introduce a default argument for the first parameter of setters.
1770+
if (isFirstParameter && camel_case::getFirstWord(baseNameStr) == "set")
17721771
return DefaultArgumentKind::None;
17731772

17741773
// Some nullable parameters default to 'nil'.
@@ -1789,10 +1788,6 @@ DefaultArgumentKind ClangImporter::Implementation::inferDefaultArgument(
17891788
}
17901789
}
17911790

1792-
// Don't introduce an empty options default arguments for setters.
1793-
if (isFirstParameter && camel_case::getFirstWord(baseNameStr) == "set")
1794-
return DefaultArgumentKind::None;
1795-
17961791
// Option sets default to "[]" if they have "Options" in their name.
17971792
if (const clang::EnumType *enumTy = type->getAs<clang::EnumType>()) {
17981793
const clang::EnumDecl *enumDef = enumTy->getDecl()->getDefinition();
@@ -2175,8 +2170,7 @@ ImportedType ClangImporter::Implementation::importMethodParamsAndReturnType(
21752170

21762171
auto defaultArg = inferDefaultArgument(
21772172
param->getType(), optionalityOfParam,
2178-
importedName.getDeclName().getBaseName(), numEffectiveParams,
2179-
name.empty() ? StringRef() : name.str(), paramIndex == 0,
2173+
importedName.getDeclName().getBaseName(), name.str(), paramIndex == 0,
21802174
isLastParameter, getNameImporter());
21812175
if (defaultArg != DefaultArgumentKind::None)
21822176
paramInfo->setDefaultArgumentKind(defaultArg);

lib/ClangImporter/ImporterImpl.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1070,9 +1070,9 @@ class LLVM_LIBRARY_VISIBILITY ClangImporter::Implementation
10701070
/// given Clang \c type, \c baseName, and optionality.
10711071
static DefaultArgumentKind
10721072
inferDefaultArgument(clang::QualType type, OptionalTypeKind clangOptionality,
1073-
DeclBaseName baseName, unsigned numParams,
1074-
StringRef argumentLabel, bool isFirstParameter,
1075-
bool isLastParameter, importer::NameImporter &);
1073+
DeclBaseName baseName, StringRef argumentLabel,
1074+
bool isFirstParameter, bool isLastParameter,
1075+
importer::NameImporter &nameImporter);
10761076

10771077
/// Import the parameter and return types of an Objective-C method.
10781078
///

0 commit comments

Comments
 (0)