mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Handle arrow operator (#3768)
This change implements the check behavior for the arrow operator. `ptr->Foo()` is rewritten as `(*ptr).Foo()` and `ptr->(X.y)` is rewritten as `(*ptr).(X.y)`
This commit is contained in:
@@ -9,6 +9,10 @@ fn A() {
|
||||
// CHECK:STDERR: *A;
|
||||
// CHECK:STDERR: ^
|
||||
*A;
|
||||
// CHECK:STDERR: fail_deref_function.carbon:[[@LINE+3]]:3: ERROR: Expression cannot be used as a value.
|
||||
// CHECK:STDERR: A->foo;
|
||||
// CHECK:STDERR: ^
|
||||
A->foo;
|
||||
}
|
||||
|
||||
// CHECK:STDOUT: --- fail_deref_function.carbon
|
||||
@@ -22,8 +26,10 @@ fn A() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @A() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %A.ref: <function> = name_ref A, file.%A [template = file.%A]
|
||||
// CHECK:STDOUT: %A.ref.loc11: <function> = name_ref A, file.%A [template = file.%A]
|
||||
// CHECK:STDOUT: %.loc11: ref <error> = deref <error>
|
||||
// CHECK:STDOUT: %A.ref.loc15: <function> = name_ref A, file.%A [template = file.%A]
|
||||
// CHECK:STDOUT: %.loc15: ref <error> = deref <error>
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
Reference in New Issue
Block a user