Difference between revisions of "Random DMD Facts"

From D Wiki
Jump to: navigation, search
(Random DMD Facts.)
 
(One intermediate revision by the same user not shown)
Line 5: Line 5:
 
(Which may be outdated by the time of reading)
 
(Which may be outdated by the time of reading)
  
1) Detecting a call to a default constructor:
+
1) Detecting a default initialization of a class:
 
   class C {}; auto c = new C()
 
   class C {}; auto c = new C()
  
 
   Will be represented as a `NewExp`
 
   Will be represented as a `NewExp`
 
   To get the function that is being called you need to look at the member `member`  
 
   To get the function that is being called you need to look at the member `member`  
   If that `FuncDeclaration` is null, this is a call to the default constructor.
+
   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.

Latest revision as of 01:20, 14 June 2020

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.