Files
swift-mirror/test/ImportResolution/import-resolution-overload_swift5.swift
Hamish Knight 5b99c2020f NFC: Re-organize NameBinding tests
The directory currently seems to have a mix of
tests for import resolution and name lookup.
Therefore split it into two directories;
ImportResolution and NameLookup.
2020-03-29 18:51:09 -07:00

55 lines
1.6 KiB
Swift
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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
}
}