<rant>My project has 500 hundred modules. It compiled quite well in XE2011, but with occasional issues with overriding intrinsics like sqrt for a new derived type. It was sometimes not selecting the intrinsic when operating on real variables.
In XE2013 compiler isues are plagueing me. I spent 6 weeks getting my first full compile. And still I am spending 70% of my day working around compiler/VS integration issues.
First is the same issue as above.
Second is Internal Compiler errors. These occur when a routine in one module calls a routine in a second module and it says an argument type is not found in the second module defintion. It should not happen since the called routine compiled without error. By re-aranging the order of use statements or moving them from routine to module header or vice versa I can get the compiler error to go away but it is trial and error. I have noticed that placing a use in a module header randomly fails to pass its scope to the contained routines.
Third problem is that Visual Studio will not automatically work out the correct compile order. When it comes to a use statement it may say it cannot open the module. I manually compile the file containg the module and so on for about an hour until finally it compiles all and links. Re-compiling is never clean, it always re-compiles loads of files. I tried the usual trick of deleting the U2D file and it changes the order a little but rarely have I had a fully clean build.
Lastly is compiler hanging, I have a support ticket for this one.</rant>
<praise>I can see that polymorphism is now much improved and in fact I am finding that changing to type bound procedures is now more reliable than simple module routines.</praise>