| // RUN: %empty-directory(%t) |
| // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/overload_vars.swift |
| // RUN: %target-typecheck-verify-swift -swift-version 5 -I %t |
| |
| import overload_vars |
| |
| func useString(_ str: String) {} |
| |
| // In Swift 5, properties from this module currently always shadow properties |
| // from the other module – therefore meaning that the properties from the other |
| // module never show up in the overload set. |
| // FIX-ME: It seems reasonable for both to show up in the overload set. |
| |
| extension HasFooGeneric { |
| var foo: String { return "" } |
| var bar: String { return "" } |
| |
| func baz() { |
| let x1 = foo // No ambiguity error. |
| useString(x1) // Make sure we resolved to `foo: String`. |
| |
| // Make sure `foo: Int` is not in the overload set. |
| let x2: Int = foo // expected-error {{cannot convert}} |
| _ = x2 |
| |
| let y1 = bar // No ambiguity error. |
| useString(y1) // Make sure we resolved to `bar: String`. |
| |
| // Make sure `bar: Int` is not in the overload set. |
| let y2: Int = bar // expected-error {{cannot convert}} |
| _ = y2 |
| } |
| } |
| |
| extension HasFooNonGeneric { |
| var foo: String { return "" } |
| var bar: String { return "" } |
| |
| func baz() { |
| let x1 = foo // No ambiguity error. |
| useString(x1) // Make sure we resolved to `foo: String`. |
| |
| // Make sure `foo: Int` is not in the overload set. |
| let x2: Int = foo // expected-error {{cannot convert}} |
| _ = x2 |
| |
| let y1 = bar // No ambiguity error. |
| useString(y1) // Make sure we resolved to `bar: String`. |
| |
| // Make sure `bar: Int` is not in the overload set. |
| let y2: Int = bar // expected-error {{cannot convert}} |
| _ = y2 |
| } |
| } |