Random DMD Facts

From D Wiki
Jump to: navigation, search

Random DMD Facts.

I've decided to document everything here that I come across. On this page you'll see a truly random assortment of facts about DMD Internals. (Which may be outdated by the time of reading)

1) Detecting a default initialization of a class:

  class C {}; auto c = new C()
  Will be represented as a `NewExp`
  To get the function that is being called you need to look at the member `member` 
  If that `FuncDeclaration` is null, that is a default initialization.

2) Null statements stand for empty statements

   Usually in DMD null node represent that something has not been  resolved yet.
   However a new which contains an optional statement (Such as {})
   will represent a missing statement as null.