Closed jurgenvinju closed 1 year ago
the actual declarations of those fields are not present in m3.declarations. So it seems that the declarations of the fields are replaced by the type of the thing they are declaring.
Having an example here would be very helpful, as I can only guess what you're looking at now.
What I can comment is that this table is filled using a couple of deep matches in lang::cpp::M3.rsc
, lines 53-57. It's possible that this is not precise enough for your current analysis; this would be the place to improve the logic (in particular, line 55 looks most peculiar).
I'll try and make an example, either from memory or using a typical C++ example like the snakes and ladders game.
Just something small and constructed would suffice, I suppose
solved this by fixing the code that @rodinaarssen pointed to, and also added tests
When we experiment with C++ code in clair we figured out that
m.declarations[classLoc]
led to more than just the declaration of the class. It also contains field definitions of the type of that class in other classes and friend declarations, etc. This is breaking analysis accuracy.