Rust: Only include relevant AST nodes in TypeMention#19557
Rust: Only include relevant AST nodes in TypeMention#19557paldepind merged 4 commits intogithub:mainfrom
Conversation
| @@ -0,0 +1,2 @@ | |||
| illFormedTypeMention | |||
| | main.rs:403:18:403:24 | FuncPtr | | |||
There was a problem hiding this comment.
This inconsistency is a path to a function pointer type, which doesn't have a type as we don't support function pointers types.
|
DCA seems fine though I don't really understand the result.
|
They would have to be added here, and then we would also have to add a new report to DCA. |
|
Thanks. I've added type inference inconsistencies to |
hvitved
left a comment
There was a problem hiding this comment.
LGTM, but some tests are failing.
a627277 to
5e4576b
Compare
3099d3d to
0023122
Compare
|
Now the CI is (finally) happy. I removed type inference inconsistencies from the reduced summary stats and also suppressed inconsistencies in library code. |
| key = "Inconsistencies - SSA" and value = getTotalSsaInconsistencies() | ||
| or | ||
| key = "Inconsistencies - data flow" and value = getTotalDataFlowInconsistencies() | ||
| key = "Inconsistencies - Data flow" and value = getTotalDataFlowInconsistencies() |
There was a problem hiding this comment.
This will require an internal change in the DCA report.
There was a problem hiding this comment.
Oh 😭 I'll revert it.
0023122 to
6313703
Compare
6313703 to
5228062
Compare
At some point when quick eval'ing something I noticed that we have a lot of superfluous elements in
TypeMention.This PR adds a basic consistency check for
TypeMentions: that they have a type in the root. One could go further and check that the entire type tree corresponds to the types, but checking the root was enough at the moment to find interesting stuff.The biggest source of unnecessary
TypeMentions was that we includePathinTypeMention, which also included all paths that are not types.A second inconsistency where paths where path resolution failed to find anything. These have now been excluded, as they don't do any good as
TypeMentions anyway.There's still a lot of inconsistencies reported by the PR. One source is paths that resolve to a union, which don't have a type as we do not support unions.
On
rustthis PR reduces the number ofTypeMentions from around 13 million to around 2 million.