| //! Test that name resolution works correctly when a struct and its constructor | |
| //! function have the same name within a nested scope. This checks that the | |
| //! compiler can distinguish between type names and value names in the same | |
| //! namespace. | |
| //@ run-pass | |
| struct Point { | |
| i: isize, | |
| } | |
| impl Point { | |
| fn get_value(&self) -> isize { | |
| return 37; | |
| } | |
| } | |
| // Constructor function with the same name as the struct | |
| #[allow(non_snake_case)] | |
| fn Point(i: isize) -> Point { | |
| Point { i } | |
| } | |
| pub fn main() { | |
| // Test that we can use the constructor function | |
| let point = Point(42); | |
| assert_eq!(point.i, 42); | |
| assert_eq!(point.get_value(), 37); | |
| } |