diff --git a/lib/Sema/TypeCheckDeclObjC.cpp b/lib/Sema/TypeCheckDeclObjC.cpp index 940f44c736d5b..1ebe3e332739b 100644 --- a/lib/Sema/TypeCheckDeclObjC.cpp +++ b/lib/Sema/TypeCheckDeclObjC.cpp @@ -2542,6 +2542,9 @@ namespace { auto opposite = (*this)(rightDecl, leftDecl); if (normal != opposite) return normal; + + leftContext = leftContext->getParent(); + rightContext = rightContext->getParent(); } // Final tiebreaker: Kind diff --git a/test/multifile/Inputs/objc_selector_conflict_multifile_other.swift b/test/multifile/Inputs/objc_selector_conflict_multifile_other.swift new file mode 100644 index 0000000000000..ab1c204fa13ad --- /dev/null +++ b/test/multifile/Inputs/objc_selector_conflict_multifile_other.swift @@ -0,0 +1,8 @@ +import Foundation + +extension EmitTest { + @objc static func emit(_ number : Int) -> Int { + // expected-note@-1 {{'emit' previously declared here}} + return 0 + } +} diff --git a/test/multifile/objc_selector_conflict_multifile.swift b/test/multifile/objc_selector_conflict_multifile.swift new file mode 100644 index 0000000000000..07f77f2c026f1 --- /dev/null +++ b/test/multifile/objc_selector_conflict_multifile.swift @@ -0,0 +1,13 @@ +// RUN: %target-typecheck-verify-swift %S/Inputs/objc_selector_conflict_multifile_other.swift +// REQUIRES: objc_interop + +import Foundation + +class EmitTest {} + +extension EmitTest { + @objc static func emit(_ string : String) -> String { + // expected-error@-1 {{method 'emit' with Objective-C selector 'emit:' conflicts with previous declaration with the same Objective-C selector}} + return "" + } +}