On 6/18/14, 1:17 PM, Etienne wrote:
I want non-null in the type system! To put a nullable reference into a
non-null variable you need to check first, but from then on the compiler
can ensure it's never null!

That would be great but useless for my situation involving some complex
AST's

class AEntity
{
     Module head;
     string ident;
     Type type;
     AEntity typeInfo;
     AEntity[] members; // for definitions
     AEntity[] parameters; // if parameterized
...
}

It's very useful to descend through parts of a complex tree without
adding plenty of bool checks

foreach (AEntity member; entity.members)
{
     if (member.typeInfo !is null)
     {
         AEntity curr = member;
         member.ident ~= member.typeInfo.ident;
         curr = member.typeInfo;
         while (curr.typeInfo !is null)
         {
             member.ident ~= "." ~ curr.typeInfo.ident;
             curr = curr.typeInfo;
         }
     }
}

But if you don't add the bool checks you might get segmentation fault. Or am I missing something?

Reply via email to