<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/55324>55324</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Attributes with a self type parameter cannot use declarative assembly
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir:core
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
stellaraccident
</td>
</tr>
</table>
<pre>
In the test dialect, we have a self-type attribute:
```
// An attribute testing AttributeSelfTypeParameter.
def AttrWithSelfTypeParam : Test_Attr<"AttrWithSelfTypeParam"> {
let mnemonic = "attr_with_self_type_param";
let parameters = (ins AttributeSelfTypeParameter<"">:$type);
let hasCustomAssemblyFormat = 1;
}
```
This prints as:
```
#test<"attr_with_self_type_param i32">
```
It was noted on https://reviews.llvm.org/D124318 that when using declarative assembly, we should not include the self type, but it is unclear what else to do. As an example:
```
def MLProgram_ExternAttr : MLProgram_Attr<"Extern"> {
let parameters = (ins AttributeSelfTypeParameter<"">:$type);
let mnemonic = "extern";
let assemblyFormat = "`<` $type `>`";
}
```
This does indeed work and prints as `#ml_program.extern<i32>`. What I really want is something like the builtin syntax: `#ml_program.extern : i32` but that appears impossible with either declarative or custom printer/parser.
Can we confirm that the above is WAI, and if so, add a corresponding test case to the test dialect showing use of custom assembly with a self type attribute. Separately, can we confirm that the prettier format I really want cannot be done?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1lctu2zoQhp9G2gwqyJTly0IL146BAC1QoAGyNChxbLGlSIGk4vjtO6R8OU6T024KCLQuw7n9H8e1EafqUYNvETw6D0JyhY1P2BqOCC1_QeDgUO0_-VNP995bWQ8ek2KV5Jskv6yz_HyNj2xLF6z0bUN0L_UBVpc338nrEzn9xi3v0KPNxs0C99HoWfr2zgYoKDyRm134nBTrhLF3Del9UjxAMv88egRQ6KHT2BktG3KzATIJqe2OtHcX6tuF-nb9dfvd1v6SojtvXkjt_qeSMbcxjdApNg3eE7Z847flbj04b7qVc9jV6rQ1tuM-BplcbZP55v0ux_WplQ56K7V3wN2fdCmCDGN6H9YPsrjk_nHYRw9H7kAbjwKMhtb7PkaP0lt8kXh0mVIvXWbsgV5tJmxaTBaEGhV4bFHD4AIPAhtFUb0MqJ3bcMbPtWZQIsQAqRs1CIyghnRhbOgaqP8g6XIwkAlyS74pACpHxgaEyWBFjdGAr7zr1R_ADex9_fLNmgP1YffwSlrqIHNE7_bhxt9o8j5w_4qatyDjLYc7O_47VMGIaqVAsxzOASC-eQjrf1z8BXTCoCNhBBIBR2N_UpfFjcTolhWd2vVj17JznsU68BUDZvAcxHoEi1ypExGlo5TOUEPaQIeSP0fR60Eqmh_gTtrz1yDHB_6jVCECVRjgiLzxvic0KNuuN87JWiEE8gFpQXvHoLHQxDM5lkKysC0p6a7zaVzXhBQh2hi9l7Ybo4Q8eW3ICdXwvHoMfIaeyD1VFB-EoHHaGGvR9UaLUGEcuw0fcX07h8MROAargb6b_SWzi7JjEfx2Im7zNoPvGAD0OB6n5oN8e4veS-rBfqTkXgvaFU5fjSS2prOzTUVViGWx5KmXXmF1pdn9nsuV_4ubUMR7xz0drKruB8iBnA111hiaxtswRc4_n0jsH_EPaiudG9DRTVkWbJq21Xy2nwo-z1lTiLrYc1bWS1aXi2U-KyZiuUgVr2kuVEn5mUjvlKQTtyIxMHBfblJZsZyxvMznbMImeZktJryZLhainuFiVuZFMs2x41Jdx1pqq5hUPRwcfVTS-dvMS6k8edCIMSD554Nvja0cSRJa0DRSoPZprKOKRfwC_WRsMw">