In Ionide, the redundant qualifier tip (FSAC0002) is tagged on the first identifier when joining on a nullable property in a query expression. For example, if table1.column1 is of type int and table2.column2 is of type Nullable<int>, the following code snipped gets the FSAC0002 tip on row1 in row1.column1 =? row2.column2.
query {
for row1 in table1 do
join row2 in table2 on (row1.column1 =? row2.column2)
select (row1, row2)
}
Here, the row1 identifier is actually not redundant and will break the code if removed. Interestingly, this only seems to happen when using the =? operator. If you write the same line with the condition as row1.column1 = row2.column2.value, no tool tip is shown.