Summary:
There are a few field init values that are concrete but not complete/foldable (e.g. `?`). This allows for using those values as initializers without erroring out.
Example:
```
class A {
string value = ?;
}
class B<A impl> : A {
let value = impl.value; // This currently emits an error.
let value = ?; // This doesn't emit an error.
}
```
Differential Revision: https://reviews.llvm.org/D74360
24 lines
324 B
TableGen
24 lines
324 B
TableGen
// RUN: llvm-tblgen %s | FileCheck %s
|
|
// XFAIL: vg_leak
|
|
|
|
// CHECK: --- Defs ---
|
|
|
|
// CHECK: def A1 {
|
|
// CHECK: string value = ?;
|
|
// CHECK: }
|
|
|
|
// CHECK: def B1 {
|
|
// CHECK: string value = A1.value;
|
|
// CHECK: }
|
|
|
|
class A {
|
|
string value = ?;
|
|
}
|
|
|
|
class B<A impl> : A {
|
|
let value = impl.value;
|
|
}
|
|
|
|
def A1 : A;
|
|
def B1 : B<A1>;
|