<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=http://email.email.llvm.org/c/eJylVMuO2zgQ_Br5QkTQyCN7fNAhDwywh70kAXKmpJbUCUUqfNjrfP1WU_ZMHsfAhs1nd1V1NTs3XNuPPM1RWXdRxaH6NOuVhs_XlTBRHJRWvXGBBhWxpsI1RFpUnHVUq6dBRwpKTqt_bCQ_6h7zon7SfUzamGtRv1cc1UUjkFXO88RWG7W4yGcd2Vk1Ov9HgC7hCilLZ_JqclFp75IFBKc8Re9GjpHthMhFfSrV5xk4e08ZjFY2LR3uuRH5Jm35R06ErBxCkhOIdCH2g2LbkwUSLLIFKQIn95X6KLBpHDHCprmqRX-TfNpe1cDaYP1NWKnnkftNlyzIRdsYBCQLFbeqjgAnUO-QsTc6YHOWOEESiy69tlboDW6NOf-r_FCx5rskGN9oahOcmnXIpzeIwnTwfJbIAiZDkG1UsEtsIJXU8gY8C26dcjjhIacOTqhru3HA6hXCUxY743-FVBbVh6J6u_3-y5aXe4lRrDC7ZHAreYnEoigiIOwLiSz8vX4b_v84xF9gb0pwLNUnWrVHRX9PYJz7pgB0cZkwmEWywXkM5CD-Flo8jbe55MTwDOb5zE0bFupSQinwXZrs3MvM_YyVQUllMkK16aIiL5QN944gIq65XMyE81rwkCSMgDnNv2Ke9VmUvEMnPznrFu6DlA62oKWDyRBzCcX-bW6YfA_6G8quER0HEg-PEpfsgAqlVSJn_dxmw0z6YROkfNFFSR9dL6j37yWcoPArBzQokopiqePviaNLQaEK2WEiANvRazGtIOtdiECN1CmQD6X68sI3EAlQcRhtb8hF55OD27yRrbaIg_gHCj9w8GnNzwGyF_UzLIpOPINyyKpv1tBrLHdDux9O-5Pe6QSpfYv3yBg4pe9x2sZd8qadY1xFSUTCd-I4p67s3YKJMef735uXZn_eXgYMmn1VVbu5PR4fnx6bh-PhNB7H0-NwarrDcT_Uhz0dqqe62xndkQlt0bxDb1q6bI8LxkXzYff3CLitq7quHqoGn32zL_tDo5tDhUU60MPYFY8VLZpNKXFKPHQ73-aQXZoCNg18G143YTKe0NY3wB_hen-sjje8kaOh9llLj_z8BP3RwrsMs80Y_wcRKCqu>53000</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Factor ShapedType into an interface
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
River707
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
stellaraccident
</td>
</tr>
</table>
<pre>
Right now `ShapedType` is a closed type system that predates Type Interfaces (actually, it was an original motivation for Type Interfaces but we never got around to retrofitting it). This creates a number of organizational issues and weird incentives in the project, effectively making any dialect-specific type that wants to interop be a second class thing since it cannot adopt the ShapedType "interface". This also has the effect of driving types to the `builtin` dialect for no other reason than that they need to be a ShapedType.
Minimally, we should turn this into an interface and retrofit the existing types to adopt it. Separately, we should look at moving `tensor`, `memref`, and `vector` to their respective dialects (which did not exist at the time). Before doing such a move, though, we should have a look at ergonomics of assembly forms: it would be less than ideal if we ended up having to type `!tensor.tensor` everywhere.
Migrating such an old and ubiquitous part of the infra can be costly to users. We should see if there is a way to do this that minimizes disruption and/or provides time to adapt.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxlVMuO2zgQ_Br5QkSQ5cdkDjokGwywh70kAfZMUS2pE4rU8mGv8_VbTdkzmwQ2bD67q6qr2fvh1n3maU7K-auqzs2XWa80fL2thIniqLQy1kcaVMKaireYaFFp1kmtgQadKCo5rf50icKoDeZV-16blLW1t6r9Q3FSV41ATvnAEztt1eITX3Ri79Tow28B-owrpBxdKKjJJ6WDzw4QvAqUgh85JXYTIlftc62-zsBpAhUwWrm89LjnR-SbtOMfJRGycoxZTiDSlTgMip0hByRYZAdSBE7-G5kksGkcMcKmvalFf5d82t3UwNpi_V1cyfDIZtOlCHLVLkUByULFr6onwIlkPDIaqyM2Z4kTJbHoYrRzQm_wayr53-SHii0_JMH4TlPb6NWsYzm9QRSmQ-CLRBYwBYJso4J9ZguppJZ34EVw55XHiQA5dfRCXbuNA1ZvEJ6K2AX_G6S6aj5VzYft9y92vDxKjGLF2WeLWzlIJBZFEQFhX0kU4R_12_D_yzH9BHtTglOtvtCqAyr6awLr_XcFoIsvhMEskYs-YCAH8bfQEmi8zyUnhhcwL2fu2rBQlxJKgR_SFOdeZzYzVgYllSkI1aaLSrxQMdxHgoi45ksxM85rwUOSMAHmNP-MedYXUfIBncLknV_YRCkdbEFLD5Mh5hKrw4fSMOUe9LdUXCM6DiQeHiUuuQEVyqtELvr5zYaF9H4TpH7VRUkf3a6o968lnKDwGwc0KJKKYrnnfzInn6NCFYrDRAB2Y9BiWkFmfExAjdQ5Uoi1-vuVbyQSoOIw2t6Qqy4nB795o1htEQfxDxR-4BjyWp4DZK_aF1gUnXgB5VhU36yh11Tvhu4wPB-e9S5xstS9aCns__vmN9_tcrDdnNIq4iI4vhOnOfe18Qsm1l4ef-9e-_9leywwOB2aptnN3VGf92fq93tzPB_3h5Mxw_lIzcG8b87t02ncWd2TjV11-oh2dXTd3huMq9OnHXdt07bNvjnhczgdanM-6dO5wSKdaT_21bGhRbOtBUeNl2sXugKpz1PEpoUR49smXMMT-vSe7jNsHJ6ap3s2nWHD0OGtthZdZAyUdGlXAHWF0H-YwRWp">