Skip to content

Commit c9eb2d5

Browse files
authored
Merge pull request #58613 from ahoppen/pr/refactor-misses-prefix-operator
[Refactoring] Fix an issue where refactoring misses to refactor references after prefix operators
2 parents ff211b7 + 6d2582f commit c9eb2d5

File tree

4 files changed

+24
-8
lines changed

4 files changed

+24
-8
lines changed

lib/IDE/Refactoring.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -440,11 +440,6 @@ class Renamer {
440440
HandleLabels = Resolved.LabelType != LabelRangeType::None;
441441
break;
442442
}
443-
} else if (Resolved.LabelType != LabelRangeType::None &&
444-
!Config.IsNonProtocolType &&
445-
// FIXME: Workaround for enum case labels until we support them
446-
Config.Usage != NameUsage::Definition) {
447-
return RegionType::Mismatch;
448443
}
449444

450445
if (HandleLabels) {

lib/IDE/SwiftSourceDocInfo.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -310,10 +310,12 @@ static Expr *extractNameExpr(Expr *Fn) {
310310

311311
std::pair<bool, ArgumentList *>
312312
NameMatcher::walkToArgumentListPre(ArgumentList *ArgList) {
313-
auto Labels = getCallArgLabelRanges(getSourceMgr(), ArgList,
314-
LabelRangeEndAt::BeforeElemStart);
315-
tryResolve(Parent, ArgList->getStartLoc(), LabelRangeType::CallArg,
313+
if (!ArgList->isImplicit()) {
314+
auto Labels = getCallArgLabelRanges(getSourceMgr(), ArgList,
315+
LabelRangeEndAt::BeforeElemStart);
316+
tryResolve(Parent, ArgList->getStartLoc(), LabelRangeType::CallArg,
316317
Labels.first, Labels.second);
318+
}
317319
if (isDone())
318320
return {false, ArgList};
319321

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
let bar: Int = 12
2+
let negfoo = -bar
3+
print("opposite of \(bar) is \(negfoo)")
4+
5+
6+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
let foo: Int = 12
2+
let negfoo = -foo
3+
print("opposite of \(foo) is \(negfoo)")
4+
5+
// RUN: %empty-directory(%t.result)
6+
7+
// RUN: %refactor -rename -source-filename %s -pos=1:5 -new-name bar >> %t.result/def.swift
8+
// RUN: %target-swift-frontend-typecheck %t.result/def.swift
9+
// RUN: diff -u %S/Outputs/prefix_operator/refactor.swift.expected %t.result/def.swift
10+
11+
// RUN: %refactor -rename -source-filename %s -pos=2:15 -new-name bar >> %t.result/operator_ref.swift
12+
// RUN: %target-swift-frontend-typecheck %t.result/operator_ref.swift
13+
// RUN: diff -u %S/Outputs/prefix_operator/refactor.swift.expected %t.result/operator_ref.swift

0 commit comments

Comments
 (0)