
Hello Olaf,
to me that sounds as if you want to do an abstract interpretation with a forward collecting semantics that employs non-relational abstract domains for the primitive data types and summarizes the dimensions of arrays. ... I would start by writing a simple interpreter for the language to be analyzed. That way you fix messy details before they bite you, e.g. the order in which submodules are loaded and initialized.
I was hoping not having to write an interpreter (because the language author wrote a translation to C++ already), but if that is the way to go, I'll do it. As I understand it, the Haskell semantics should contain just enough substance so that the errors I am after will cause hiccups in the Haskell compiler? That is indeed a compelling approach. What this does not address is the question about error reporting: How could a translation to Haskell preserve information about scope, source position and masking? Can I leverage the ghc API for that? Regards, Olaf