diff --git a/lib/IDE/Refactoring.cpp b/lib/IDE/Refactoring.cpp index f42aca90a8b8f..34dfe31edceff 100644 --- a/lib/IDE/Refactoring.cpp +++ b/lib/IDE/Refactoring.cpp @@ -440,11 +440,6 @@ class Renamer { HandleLabels = Resolved.LabelType != LabelRangeType::None; break; } - } else if (Resolved.LabelType != LabelRangeType::None && - !Config.IsNonProtocolType && - // FIXME: Workaround for enum case labels until we support them - Config.Usage != NameUsage::Definition) { - return RegionType::Mismatch; } if (HandleLabels) { diff --git a/lib/IDE/SwiftSourceDocInfo.cpp b/lib/IDE/SwiftSourceDocInfo.cpp index 90b85e03b0ba3..dd685a58964d5 100644 --- a/lib/IDE/SwiftSourceDocInfo.cpp +++ b/lib/IDE/SwiftSourceDocInfo.cpp @@ -310,10 +310,12 @@ static Expr *extractNameExpr(Expr *Fn) { std::pair NameMatcher::walkToArgumentListPre(ArgumentList *ArgList) { - auto Labels = getCallArgLabelRanges(getSourceMgr(), ArgList, - LabelRangeEndAt::BeforeElemStart); - tryResolve(Parent, ArgList->getStartLoc(), LabelRangeType::CallArg, + if (!ArgList->isImplicit()) { + auto Labels = getCallArgLabelRanges(getSourceMgr(), ArgList, + LabelRangeEndAt::BeforeElemStart); + tryResolve(Parent, ArgList->getStartLoc(), LabelRangeType::CallArg, Labels.first, Labels.second); + } if (isDone()) return {false, ArgList}; diff --git a/test/refactoring/rename/Outputs/prefix_operator/refactor.swift.expected b/test/refactoring/rename/Outputs/prefix_operator/refactor.swift.expected new file mode 100644 index 0000000000000..46cda34c9612a --- /dev/null +++ b/test/refactoring/rename/Outputs/prefix_operator/refactor.swift.expected @@ -0,0 +1,6 @@ +let bar: Int = 12 +let negfoo = -bar +print("opposite of \(bar) is \(negfoo)") + + + diff --git a/test/refactoring/rename/prefix_operator.swift b/test/refactoring/rename/prefix_operator.swift new file mode 100644 index 0000000000000..344e187d7591e --- /dev/null +++ b/test/refactoring/rename/prefix_operator.swift @@ -0,0 +1,13 @@ +let foo: Int = 12 +let negfoo = -foo +print("opposite of \(foo) is \(negfoo)") + +// RUN: %empty-directory(%t.result) + +// RUN: %refactor -rename -source-filename %s -pos=1:5 -new-name bar >> %t.result/def.swift +// RUN: %target-swift-frontend-typecheck %t.result/def.swift +// RUN: diff -u %S/Outputs/prefix_operator/refactor.swift.expected %t.result/def.swift + +// RUN: %refactor -rename -source-filename %s -pos=2:15 -new-name bar >> %t.result/operator_ref.swift +// RUN: %target-swift-frontend-typecheck %t.result/operator_ref.swift +// RUN: diff -u %S/Outputs/prefix_operator/refactor.swift.expected %t.result/operator_ref.swift