Turn addr self in destructors into an error. (#2803)

Previously crashed. See #2802
This commit is contained in:
Jon Ross-Perkins
2023-05-01 11:30:19 -07:00
committed by GitHub
parent 0732d5857d
commit b9bd7e1eff
2 changed files with 33 additions and 3 deletions
+24
View File
@@ -0,0 +1,24 @@
// 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
//
// AUTOUPDATE
// RUN: %{not} %{explorer-run}
// RUN: %{not} %{explorer-run-trace}
package ExplorerTest impl;
class A {
destructor[addr self: Self*] {
self->n += 1;
Print("DESTRUCTOR A {0}", self->n);
// CHECK:STDERR: RUNTIME ERROR: {{.*}}/explorer/testdata/destructor/fail_addr.carbon:[[@LINE+1]]: destructors currently don't support `addr self` bindings
}
var n: i32;
}
fn Main() -> i32 {
var a: A = {.n = 2};
return 0;
}