================
@@ -131,17 +131,21 @@ def note_constexpr_past_end : Note<
   "dereferenced pointer past the end of %select{|subobject of }0"
   "%select{temporary|%2}1 is not a constant expression">;
 def note_constexpr_past_end_subobject : Note<
-  "cannot %select{access base class of|access derived class of|access field 
of|"
-  "access array element of|ERROR|"
-  "access real component of|access imaginary component of}0 "
-  "pointer past the end of object">;
+  "cannot %enum_select<AccessType>{"
+    "%BaseClassAccess{access base class of}|%DerivedClassAccess{access derived 
class of}|"
+    "%FieldAccess{access field of}|%ArrayElementAccess{access array element 
of}|"
+    "%ErrorAccess{ERROR}|"
+    "%RealComponentAccess{access real component 
of}|%ImaginaryComponentAccess{access imaginary component of}"
+  "}0 pointer past the end of object">;
 def note_non_null_attribute_failed : Note<
   "null passed to a callee that requires a non-null argument">;
 def note_constexpr_null_subobject : Note<
-  "cannot %select{access base class of|access derived class of|access field 
of|"
-  "access array element of|perform pointer arithmetic on|"
-  "access real component of|"
-  "access imaginary component of}0 null pointer">;
+  "cannot %enum_select<NullSubobjectAccess>{"
----------------
Sirraide wrote:

> The re-use of the same text like that is interesting.... I'd not thought of 
> doing something like that (without the curleys), but I'm a touch afraid it 
> harms readability of the diagnostic.

I mean, I personally wouldn’t consider
```
cannot %enum_select<NullSubobjectAccess>{
    "%BaseClassAccess{access base class of}|%DerivedClassAccess{access derived 
class of}|"
    "%FieldAccess{access field of}|%ArrayElementAccess{access array element 
of}|"
    "%PointerArithmetic{perform pointer arithmetic on}|"
    "%RealComponentAccess{access real component 
of}|%ImaginaryComponentAccess{access imaginary component of}"
  "}0 null pointer
```
to be more readable than
```
cannot %enum_select<NullSubobjectAccess>0 null pointer
```
I’d imagine that in cases where we’d want to reuse the enumeration, it wouldn’t 
be too uncommon to also want to reuse the text, but I haven’t checked. This was 
just an idea I had earlier while looking at this pr because here we *do* have 
some diagnostics that more or less just share the same text.

https://github.com/llvm/llvm-project/pull/130868
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to