Support for user-defined Eq impls (#1730)

Related to #1549; user-defined equality is a prerequisite for user-defined comparison.
This commit is contained in:
Thejaswi Kadur
2022-07-30 11:51:39 -07:00
committed by GitHub
parent b988d5353c
commit 5665f32bf7
18 changed files with 237 additions and 23 deletions
+25
View File
@@ -0,0 +1,25 @@
// Part of the Carbon Language project, under the Apache License v2.0 with LLVM
// Exceptions. See /LICENSE for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
// RUN: %{not} %{explorer} %s 2>&1 2>&1 | %{FileCheck} %s
// AUTOUPDATE: %{explorer} %s
package ExplorerTest api;
// TODO: This should work
// CHECK: COMPILATION ERROR: {{.*}}/explorer/testdata/comparison/fail_empty_struct.carbon:[[@LINE+1]]: type error in call: '{}' is not implicitly convertible to 'Type'
external impl {} as EqWith({}) {
fn Equal[me: Self](other: Self) -> Bool {
return true;
}
}
fn Main() -> i32 {
var empty: auto = {};
if (empty == {}) {
return 0;
} else {
return 1;
}
}